package br.com.drestranho.escola.managed;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import br.com.drestranho.escola.dao.AlunoDAO;
import br.com.drestranho.escola.entity.Aluno;
import br.com.drestranho.escola.entity.Funcionario;
import br.com.drestranho.escola.managed.manterFuncionarioListManager.ComparaFuncionario;

@ManagedBean
@SessionScoped
public class ManterAlunoListManager {
	@EJB
	AlunoDAO alunoDAO = new AlunoDAO(); 
	List<Aluno> alunos = new ArrayList<Aluno>();
	Aluno alunoSelec;
	boolean modoInsert;
	String nomePesq;
	

	public String getNomePesq() {
		return nomePesq;
	}

	public void setNomePesq(String nomePesq) {
		this.nomePesq = nomePesq;
	}

	public void iniciarTabela() {// por enquanto ele baixa a lista total de alunos e não por palavra chave
//		setAlunos(alunoDAO.getBeans());
		setAlunos(alunoDAO.pesqBeanNome(nomePesq));
		if (alunos.size()>0) Collections.sort(alunos, new ComparaAluno());
		setModoInsert(false);
	}
	
	public Aluno getAlunoSelec() {
		return alunoSelec;
	}
	
	public void setAlunoSelec(Aluno alunoSelect) {
		if (alunoSelect!=null)
			this.alunoSelec = alunoSelect;
	}
	
	public boolean isModoInsert() {
		return modoInsert;
	}
	
	public void setModoInsert(boolean modoInsert) {
		this.modoInsert = modoInsert;
	}
	
	public List<Aluno> getAlunos() {
		return alunos;
	}
	
	public void setAlunos(List<Aluno> alunos) {
		this.alunos = alunos;
	}
	
	public String cadastrar() {
		alunoSelec = new Aluno();
		setModoInsert(true);
		return "manterAlunoForm";
	}
	
	public String editar() {
		if (alunoSelec!=null) {
			setModoInsert(false);
			return "manterAlunoForm";
		} else return "";
	}
	
	public String salvar() {
		alunoDAO.salvar(alunoSelec);
		return "manterAlunoList";
	}
	
	public String atualizar() {
		alunoDAO.atualizar(alunoSelec);
		return "manterAlunoList";
	}
	
	public String remover() {
		Aluno f = alunoDAO.getBean(getAlunoSelec().getId());
		alunoSelec = null;
		alunoDAO.remover(f);
		iniciarTabela();
		return "";
	}
	
	// Classe interna que ordena os funcionarios por nome
	public class ComparaAluno implements Comparator<Aluno> {
		@Override
		public int compare(Aluno alu1, Aluno alu2) {
			return alu1.getNome().compareTo(alu2.getNome());
		}
	}
	
}
